home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / pc / LOGIC Apple II 5.25" Library - DOS Part 3 / DOS074.dsk / DRAGON MAZE ERASE I.bas < prev    next >
BASIC Source File  |  2012-02-16  |  6KB  |  162 lines

  1. 100  TEXT : CALL  -936
  2. 200  PRINT "WELCOME TO THE DRAGON'S MAZE!"
  3. 300  PRINT "YOU MAY WATCH WHILE I BUILD A MAZE,"
  4. 400  PRINT "BUT WHEN IT'S COMPLETE, I'LL ERASE"
  5. 500  PRINT "THE PICTURE.   THEN YOU'LL ONLY SEE THE WALLS AS YOU BUMP INTO THEM."
  6. 600  PRINT "TO MOVE, YOU HIT 'R' FOR RIGHT,"
  7. 700  PRINT "'L' FOR LEFT, 'U' FOR UP, AND"
  8. 800  PRINT "'D' FOR DOWN.  DO NOT HIT RETURN!"
  9. 900  PRINT 
  10. 1000  PRINT "THE OBJECT IS FOR YOU (THE GREEN DOT)"
  11. 1100  PRINT "TO GET TO THE DOOR ON THE RIGHT SIDE"
  12. 1200  PRINT "BEFORE THE DRAGON (RED DOT) EATS"
  13. 1300  PRINT "YOU."
  14. 1400  PRINT "BEWARE!!!!!!!!! SOMETIMES THE DRAGON"
  15. 1500  PRINT "GETS REAL MAD, AND CLIMBS OVER A WALL."
  16. 1600  PRINT "BUT MOST OF THE TIME, HE CAN'T GO OVER"
  17. 1700  PRINT "AND HAS TO GO AROUND."
  18. 1800  PRINT 
  19. 1900  PRINT "(HINT: YOU CAN OFTEN TELL WHERE A WALL"
  20. 2000  PRINT "IS, EVEN BEFORE YOU CAN SEE IT, BY"
  21. 2100  PRINT "THE FACT THAT THE DRAGON CAN'T GET"
  22. 2200  PRINT "THROUGH IT!)"
  23. 2300  PRINT 
  24. 2400  DIM A$(3)
  25. 2500  PRINT "TYPE 'GO' TO BEGIN ";: INPUT A$
  26. 2600  DIM M(169): DIM T(169)
  27. 2700  GR : COLOR= 6
  28. 2800  CALL  -936: PRINT "DRAGON MAZE"
  29. 2900  FOR I = 0 TO 39  STEP 3: VLIN 0,39 AT I: HLIN 0,39 AT I: NEXT I
  30. 3000  COLOR= 0
  31. 3100 S = 1000
  32. 3200  DEF  FN MOD(A) =  INT((A/B - INT(A/B)) *B +.05) * SGN(A/B)
  33. 3300  FOR I = 1 TO 169:T(I) = 0: NEXT I
  34. 3400  FOR I = 1 TO 169:M(I) = 11: NEXT I
  35. 3500 X =  INT(13 * RND(1)) +1:Y =  INT(13 * RND(1)) +1:C = 169
  36. 3600  IF C = 1  THEN 6700
  37. 3700 R = 0:D = 0:L = 0:U = 0:K = X +13 *(Y -1):M(K) =  - ABS(M(K)):C = C -1
  38. 3800  IF X < >13  THEN R = M(K +1) >0
  39. 3900  IF Y < >13  THEN D = M(K +13) >0
  40. 4000  IF X < >1  THEN L = M(K -1) >0
  41. 4100  IF Y < >1  THEN U = M(K -13) >0
  42. 4200 Q = R +D +L +U
  43. 4300  IF (Q <3  AND  INT(10 * RND(1)) <2)  OR Q = 0  THEN 6400
  44. 4400 DR =  INT(4 * RND(1))
  45. 4500  IF DR = 0  THEN 4900
  46. 4600  IF DR = 1  THEN 5300
  47. 4700  IF DR = 2  THEN 5700
  48. 4800  IF DR = 3  THEN 6100
  49. 4900  IF   NOT R  THEN 4400
  50. 5000 M(K) = M(K) +1:X = X +1
  51. 5100  VLIN 3 *Y -2,3 *Y -1 AT 3 *(X -1)
  52. 5200  GOTO 3600
  53. 5300  IF   NOT D  THEN 4400
  54. 5400 M(K) = M(K) +10:Y = Y +1
  55. 5500  HLIN 3 *X -2,3 *X -1 AT 3 *(Y -1)
  56. 5600  GOTO 3600
  57. 5700  IF   NOT L  THEN 4400
  58. 5800 M(K -1) = M(K -1) -1:X = X -1
  59. 5900  VLIN 3 *Y -2,3 *Y -1 AT 3 *X
  60. 6000  GOTO 3600
  61. 6100  IF   NOT U  THEN 4400
  62. 6200 M(K -13) = M(K -13) -10:Y = Y -1
  63. 6300  HLIN 3 *X -2,3 *X -1 AT 3 *Y: GOTO 3600
  64. 6400 X =  INT(13 * RND(1)) +1:Y =  INT(13 * RND(1)) +1
  65. 6500  IF M(X +13 *(Y -1)) >0  THEN 6400
  66. 6600 C = C +1: GOTO 3600
  67. 6700  GOSUB 12200: PRINT "THE MAZE IS READY"
  68. 6800  GR : COLOR= 6
  69. 6900  VLIN 0,39 AT 0: VLIN 0,39 AT 39: HLIN 0,39 AT 0: HLIN 0,39 AT 39
  70. 7000 X = 1:Y =  INT(13 * RND(1)) +1: COLOR= 4: FOR K = 0 TO 1: FOR L = 0 TO 1: PLOT 3 *X -2 +K,3 *Y -2 +L: NEXT L,K
  71. 7100 HX = 3 *X -2:HY = 3 *Y -2
  72. 7200  REM  PICK SPOT FOR DOOR
  73. 7300 WY =  INT(13 * RND(1)) +1
  74. 7400  COLOR= 0: VLIN 3 *WY -2,3 *WY -1 AT 39
  75. 7500 SX = 13:SY = WY
  76. 7600 QX = 3 *SX -2:QY = 3 *SY -2
  77. 7700 RD = 1: REM  SET COLOR FOR DRAGON
  78. 7800  GOSUB 12800
  79. 7900  IF SX = X  AND SY = Y  THEN 15700
  80. 8000 K =  PEEK( -16384): IF K <128  THEN 8000
  81. 8100  POKE  -16368,0
  82. 8200  IF K = 210  THEN 8700: REM  CHAR R
  83. 8300  IF K = 204  THEN 9700: REM  CHAR L
  84. 8400  IF K = 213  THEN 10000: REM  CHAR U
  85. 8500  IF K = 196  THEN 10300: REM  CHAR D
  86. 8600  GOSUB 12200: GOTO 7800
  87. 8700 DX = 1:DY = 0
  88. 8800 B = 10:R1 =  FN MOD(M(X +13 *(Y -1))): IF R1  THEN 10600
  89. 8900 FX = 3 *X -2:FY = 3 *Y -2: FOR I = 1 TO 3
  90. 9000 FX = FX +DX:FY = FY +DY
  91. 9100  COLOR= 0
  92. 9200  FOR K = 0 TO 1: FOR L = 0 TO 1: PLOT HX +K,HY +L: NEXT L,K: COLOR= 4: FOR K = 0 TO 1: FOR L = 0 TO 1: PLOT FX +K,FY +L: NEXT L,K:HX = FX:HY = FY
  93. 9300  NEXT I
  94. 9400 X = X +DX:Y = Y +DY
  95. 9500  IF X = 13  AND Y = WY  THEN 12300
  96. 9600  GOTO 7800
  97. 9700 DX =  -1:DY = 0
  98. 9800 B = 10:R1 =  FN MOD(M(X +13 *(Y -1) -1)): IF R1  THEN 11000
  99. 9900  GOTO 8900
  100. 10000 DX = 0:DY =  -1
  101. 10100  IF M(X +13 *(Y -2))/10 < =  -1  THEN 11400
  102. 10200  GOTO 8900
  103. 10300 DX = 0:DY = 1
  104. 10400  IF M(X +13 *(Y -1))/10 < =  -1  THEN 11800
  105. 10500  GOTO 8900
  106. 10600  GOSUB 12200
  107. 10700  COLOR= 6
  108. 10800  VLIN 3 *(Y -1),3 *Y AT 3 *X
  109. 10900  GOTO 7800
  110. 11000  GOSUB 12200
  111. 11100  COLOR= 6
  112. 11200  VLIN 3 *(Y -1),3 *Y AT 3 *(X -1)
  113. 11300  GOTO 7800
  114. 11400  GOSUB 12200
  115. 11500  COLOR= 6
  116. 11600  HLIN 3 *(X -1),3 *X AT 3 *(Y -1)
  117. 11700  GOTO 7800
  118. 11800  GOSUB 12200
  119. 11900  COLOR= 6
  120. 12000  HLIN 3 *(X -1),3 *X AT 3 *Y
  121. 12100  GOTO 7800
  122. 12200 S = S -1: FOR I = 1 TO 20:A =  PEEK( -16336) + PEEK( -16336) + PEEK( -16336) + PEEK( -16336): NEXT I: RETURN 
  123. 12300  PRINT "YOU WIN"
  124. 12400  GOSUB 12200: GOSUB 12200: GOSUB 12200
  125. 12500  PRINT "SCORE=";S +3
  126. 12600  GOTO 15800
  127. 12700  REM  COMPUTE MOVE FOR DRAGON
  128. 12800  IF X >SX  THEN 13200
  129. 12900  IF Y >SY  THEN 14500
  130. 13000  IF X <SX  THEN 14900
  131. 13100  IF Y <SY  THEN 15300
  132. 13200  IF SX = 13  THEN 14500
  133. 13300  IF T(SX +13 *(SY -1)) >9  THEN 13500
  134. 13400 B = 10:R1 =  FN MOD(M(SX +13 *(SY -1))): IF R1  THEN 14500
  135. 13500 DX = 1:DY = 0
  136. 13600  COLOR= 0
  137. 13700 RX = 3 *SX -2:RY = 3 *SY -2
  138. 13800  FOR I = 1 TO 3:RX = RX +DX:RY = RY +DY
  139. 13900  COLOR= 0
  140. 14000  FOR K = 0 TO 1: FOR L = 0 TO 1: PLOT QX +K,QY +L: NEXT L,K: COLOR= RD: FOR K = 0 TO 1: FOR L = 0 TO 1: PLOT RX +K,RY +L: NEXT L,K:QX = RX:QY = RY
  141. 14100  NEXT I
  142. 14200 SX = SX +DX:SY = SY +DY
  143. 14300 T(SX +13 *(SY -1)) = T(SX +13 *(SY -1)) +1
  144. 14400  RETURN 
  145. 14500  IF SY = 13  THEN 14900
  146. 14600  IF T(SX +13 *(SY -1)) >9  THEN 14800
  147. 14700  IF M(SX +13 *(SY -1))/10 < =  -1  THEN 14900
  148. 14800 DX = 0:DY = 1: GOTO 13600
  149. 14900  IF SX = 1  THEN 15300
  150. 15000  IF T(SX +13 *(SY -1)) >9  THEN 15200
  151. 15100 B = 10:R1 =  FN MOD(M(SX +13 *(SY -1) -1)): IF R1  THEN 15300
  152. 15200 DX =  -1:DY = 0: GOTO 13600
  153. 15300  IF SY = 1  THEN 13200
  154. 15400  IF T(SX +13 *(SY -1)) >9  THEN 15600
  155. 15500  IF M(SX +13 *(SY -1) -13)/10 < =  -1  THEN 13200
  156. 15600 DX = 0:DY =  -1: GOTO 13600
  157. 15700  GOSUB 12200: GOSUB 12200: GOSUB 12200: GOSUB 12200: PRINT "THE DRAGON GOT YOU!"
  158. 15800  PRINT "ENTER 'YES' TO TRY AGAIN";
  159. 15900  INPUT A$
  160. 16000  IF A$ < >"NO"  THEN 2700
  161. 16100  PRINT "BYE"
  162. 16200  END